python3小白课:深入列表
我们在前面的课程中已经初步了解了列表和元组的相关知识。
我们也知道,列表还有元组没有的增删成员等功能。因此,本节课我们再来深入了解一下列表特有的一些知识点吧。
直接上代码例子:
# coding:utf-8
# 增加列表元素,最最常用。列表有点像其他编程语言中所说的数组,但它支持多种类型的元素
# 很常用的一个场景是先定义一个空列表,后续把需要存储的成员一个个存进列表去
# 使用append方法可以将元素添加到列表中,这么写:
a = []
a.append("小白")
print(a)
# 也支持增加列表、元组等等序列类型作为单个成员,可以实现列表嵌套列表或元组等的效果
a.append((1, 2, 3))
print(a, len(a))
# 如果是要追加一个列表而不是加个列表元素呢?使用extend方法
a.extend(["apple", "banana"])
print(a, len(a))
# 刚才都是添加到列表尾部的,如果希望在中间插入元素呢?使用insert方法即可,需要指定插入位置的索引
a.insert(1, "我是插入的元素")
print(a)
# 删除列表元素
# 使用del语句,可以删除列表元素、列表子序列,还能删除变量呢
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
del a[1]
print(a)
del a[4:]
print(a)
# 删除变量是del命令带的功能,删除后再打印,会报错。但我们很少做这样的操作,你可以不掌握
name = "小白"
del name
print(name) # 这句会报错
# 你还可以使用remove方法来删除元素,它不根据索引删除,根据的是元素本身删除,如果找不到会报错
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a.remove(4)
print(a)
a.remove(11) # 这里找不到,会报错
print(a)
# 如果你需要清空列表,将列表变回空列表,可以使用clear方法
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a.clear()
print(a)
# 后面在修改元素列表的部分我们还有一种可以删除元素的方法,也是很好用的↓↓↓
# 修改列表元素
# 可以直接通过索引获取需要修改的元素来修改
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a[1] = "啊哦,我被修改啦~"
print(a)
# 也可以通过索引的各种方法修改列表,也支持步长等修改
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 这里我们取出了两个元素,却给赋值三个元素,这样相当于删除两个,再插入三个,也是可以的
a[1:3] = ["修改1", "修改2", "修改3"]
print(a)
# 赋值为空列表,还能做到删除元素的功效,这也是一种便捷的删除元素的做法
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a[1:3] = []
print(a)
列表的一些其他常用方法
列表还有一些其他的常用方法,如果你有需要可以使用,大致了解即可,有需要时可以查资料
# coding:utf-8
# 你可以查看有哪些内置方法,注意剔除私有方法和特殊方法
print(dir(list))
# count方法可以统计列表中某个元素出现的次数
a = [1, 2, 3, 4, 5, [5, 6, 7], 7, 8, 9, 10]
print(a.count(5))
# index方法判断某个元素在列表中出现的位置,可以在第二第三个参数中指定搜索的范围,找不到会报错
print(a.index(4, 2, 3))
# pop方法可以提供元素出栈功能,实现元素的先入后出,append方法是python中的类似入栈(push)的功能
# 使用pop方法可以将列表中最后一个元素移出栈,你可以简单理解为删除最后一个元素
print(a.pop()) # 会返回那个被移出栈的元素
print(a)
# reverse方法可以将元素反转,比如一堆数字,可以实现倒序排列的效果
a.reverse()
print(a)
# sort方法可以对元素进行排列
# 支持传入key、reverse两个参数,key参数可以指定生成比较大小的键
# reverse参数为布尔型,默认为False,从小到大排序,传入True则从大到小排列
a = ["12345", [5, 6, 7], "little bai"]
# key传入len方法,注意没有括号,会计算每个元素的长度,再倒序排列,注意必须每个元素都支持len方法
a.sort(key=len, reverse=True)
print(a)
# 也可以做数字排序
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a.sort(reverse=True)
print(a)
# 上述讲的排序方法需要改变列表本身的顺序,如果我只想排序不想改变呢?
# 复制一个新列表,将新列表进行排序是一个办法,还有其他办法吗?
# reversed函数可以倒序列表,生成可迭代对象,可以转化为列表展示。但不会改变原列表
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(list(reversed(a)))
print(a)
# sorted函数可以排序列表,也不会改变原列表,还支持参数
b = [2, 1, 3, 4, 5, 8, 7, 6, 9, 10]
print(sorted(b))
# 这个也行,这样看来它可以替代reversed函数,但要写个参数,看个人方便吧
print(sorted(b, reverse=True))
print(b)
# key参数也可以传入一个自己定义的函数,返回排序序号啥的,关于自己定义函数,我们将在后面讲到
c = ["12345", [5, 6, 7], "little bai"]
print(sorted(c, reverse=True, key=len))
print(c)
单词释义
| 单词 | 释义 |
|---|---|
| append | 附加,增补 |
| extend | 扩展 |
| insert | 插入 |
| del | delete删除这个单词的简写 |
| remove | 拿开,去除 |
| clear | 清除,清理 |
| count | 计数 |
| index | 索引 |
| Sequence Packing | 突然地出现,突然地伸出,这是理解为出栈命令 |
| push | 推,推进去,这里理解为入栈命令,其他语言可能有push这个命令 |
| reverse | 颠倒,使反转,reversed为这个单词的过去式,意思为已反转的 |
| sort | 排序,sorted为这个单词的过去式,意思为已排序的 |
| key | 关键,钥匙,键 |